Computer programs are often designed to perform certain tasks when specific events or conditions occur. For example, when a weather forecasting service determines that rain is likely later in the day, the forecasting service can send a notification message to weather applications located on mobile computing devices via a wireless communication network. The mobile weather applications are not necessarily executing or even loaded in memory at the time the notification message is sent, so applications rely on other software modules, such as the device operating system that can receive and process incoming notifications in a timely manner. The operating system can pass the notifications to the applications associated with the notifications, e.g., to the weather application for notifications sent by the weather service. If an application is not executing when a notification is received, the operating system can bring the application into an executing state in which the application can process the notification. The operating system can then pass the notification to the application, which will act on the notification, e.g., by displaying a warning about rain being likely later in the day.
To request delivery of notifications by the operating system, applications can provide information specifying the events or conditions for which notifications are to be delivered to the application. An event or condition can be, for example, that the chance of rain later in the day is greater than 90%. The weather service then uses the event or condition to determine when to send notifications to the application. This request for notification, including the associated event or condition, is referred to as a “subscription.” A subscription can be a “local” subscription, in which notifications are generated on the device and delivered to applications executing on the same device. A subscription can also be a “push” subscription, in which notifications are generated on one device, such as a server, and sent to other devices, such as mobile devices. The term “push subscription” refers to the server-initiated “pushing” of the notifications to subscribing devices. The processing performed by the service can be fairly complex. It would be desirable, therefore, to simplify the processing that applications perform to send and receive notifications.